NSD-G1000TとND Proxy
NURO光
のCPEである
NSD-G1000T
だが,なぜかこのシリーズだけ
ND Proxy
が動作しないという報告がある
ND Proxy
は基本的に
1.
WAN
側から
Neighbor Solicitation
を受け取る
2.
LAN
側にTarget Addressが存在するか確認する
LAN
側で
NDP
を使って確認してもいいし,サブネットが異なるのなら単純にプレフィックスを見て一致を確認するだけでも動きはする
3. 存在するなら
WAN
側に
Neighbor Advertisement
を返信する
というような挙動をする
ここで
Neighbor Solicitation
は
Solicitated-Nodeマルチキャストアドレス
に向けて送出されるので基本的にこれに対応するホスト以外は受け取ることができないが,一般的な
ND Proxy
はネットワークインターフェースを
Promiscuousモード
で動作させ,自分宛てではない
Neighbor Solicitation
を受信して応答するような挙動をする
おそらくフレッツ環境ではこれで正常に動作するのだろう
しかし
NSD-G1000T
は
MLDスヌーピング
的な挙動を実装していて,実際に
Solicitated-Nodeマルチキャストアドレス
のグループに入っているホストが存在するポート以外には
Neighbor Solicitation
を送らない。この結果として
ND Proxy
は
Neighbor Solicitation
を受け取ることができず,正常に動作しない
Solicitated-Nodeマルチキャストアドレス
は
$ 2^{24} \approx 10^7
程度の空間を持つので,偶然受け取れるというのはあまり考えにくい
解決策
(検討中)
NSD-G1000T
シリーズを親,
ND Proxy
を動作させているルーターを子とする
親のLAN空間と子のLAN空間の間にもう一つマシンを置く。このとき,マシンの親側のポートと子ルーターの親側のポートはハブなどを使って親の同一ポートから繋がるようにする
マシンは子のLAN空間から
Multicast Listener Report
メッセージを受信し,
Solicitated-Nodeマルチキャストアドレス
があったら親のLAN空間でそのグループに加入する